/*
 * Combinacao.h
 *
 *  Created on: 24/11/2011
 *      Author: Arthur Holanda
 */

#ifndef COMBINACAO_H_
#define COMBINACAO_H_

#include <FBase.h>
#include "Carta.h"

using namespace Osp::Base::Collection;

enum TipoCombinacao {
	HIGH_CARD,
	ONE_PAIR,
	TWO_PAIRS,
	THREE_OF_A_KIND,
	STRAIGHT,
	FLUSH,
	FULL_HOUSE,
	FOUR_OF_A_KIND,
	STRAIGHT_FLUSH,
	ROYAL_STRAIGHT_FLUSH
};

class Combinacao {
public:
	Combinacao();
	virtual ~Combinacao();
	void Construct(TipoCombinacao tipoCombinacao, ArrayList* cartas,
			Carta* highCard);
	int CompareTo(Combinacao* combinacao);

	TipoCombinacao GetTipoCombinacao();
	ArrayList* GetCartas();
	Carta* GetHighCard();
	bool Contem(Carta* c);
	String ToString();

protected:
	TipoCombinacao tipoCobinacao;
	ArrayList* cartas;
	Carta* highCard;
};

#endif /* COMBINACAO_H_ */
